/*package com.comm.db.jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Vector;

import java.util.List;
import java.util.Map;
 

*//**
 * ---------------
 * 
 * @author [Richie] 2008-7-15 : 下午01:54:25 -------------------------------- TODO
 *         要更改此生成的类型注释的模板，请转至 窗口 － 首选项 － Java － 代码样式 － 代码模板
 *//*
public class SessionImpls extends JDBC implements Session {

	public static Vector<Connection> connList = new Vector<Connection>();

	 连接池最大数 
	static int MinCon_number = ConnectPool.MinCon_number;

	 连接池最小数  
	static int MaxCon_number = ConnectPool.MaxCon_number;

	private Query query;

	private Query createQuery(ResultSet rs) {
		query = QueryImpl.getInstance();
		query.setRs(rs);
		return query;
	}

	private static SessionImpls session = new SessionImpls();
	

	private SessionImpls() {
	}

	public synchronized static SessionImpls getInstance() {
		if (session == null)
			session = new SessionImpls();
		return session;
	}

	*//**
	 * 连接池里
	 * @return
	 *//*
	private static Connection getConnection() {
		Connection _conn = getConnFromCachePool();
		try {

			if (null == _conn || _conn.isClosed()) { -- 连接池里没有可用的或者取到的连接是关闭状态，空闲的连接，创建连接 -- 
				wait(5000);
				System.out.println("wait 5000 ");
				_conn = getConnFromCachePool();
				if (null == _conn || _conn.isClosed())
					createConnection();
				logger.info("create new Connection.");
			} else {
				logger.info(" get Connection from pool .");
			}
		} catch (SQLException e) {
			logger.info("获取连接出错：");
			e.printStackTrace();
			_conn = createConnection();
			logger.info("create new Connection.");
		}

		//logger.info("get Connection."+_conn);
		return _conn;
	}

	*//**
	 * 连接池中取连接
	 * @return
	 *//*
	private synchronized static Connection getConnFromCachePool() {
		//logger.info("连接池中有"+connList.size()+"个连接。");
		if (ConnectPool.getVector().size() > 0) {  判断连接池中有没有，可用连接。
			Connection connection = (Connection) ConnectPool
					.getConnectFormPool(); // 有，取到连接。
			ConnectPool.removeVector(connection); 从池中移除，预用连接。
			return connection; 返回连接,连接处于活动状态。
		}
		return null;
	}

	*//**
	 * 释放连接；做到了线程安全
	 * 
	 * @param con
	 * @throws InterruptedException 
	 *//*
	public synchronized static void releaseConnection(Connection _con) {
		if (_con == null)
			return;
		try {
			if (_con != null && !_con.isClosed()
					&& ConnectPool.getVector().size() <= MaxCon_number) {
				ConnectPool.setConnectToPool(_con);
			}
		} catch (SQLException e) {
			//  
			e.printStackTrace();
		}

	}

	public static void ColseStatement(Object obj) {
		if (obj == null)
			return;
		if (obj instanceof Statement) {
			try {
				Statement st = (Statement) obj;
				st.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		} else if (obj instanceof PreparedStatement) {
			PreparedStatement ps = (PreparedStatement) obj;
			try {
				ps.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	public static void ColseResultSet(ResultSet rsSet) {
		if (rsSet == null)
			return;
		try {
			rsSet.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	private List find(String sql, List list, int startIndex, int pageSize) {
		return getList(sql, list, startIndex, pageSize);

	}

	public int countRows(String sql, List listparams) {
		int rows = 0;

		sql = sql.substring(sql.indexOf("from"));

		sql = "select count(*) " + sql;
		List list = getList(sql, listparams);

		if (list != null && list.size() > 0)
			try {
				rows = Integer.parseInt(((Map) list.get(0)).get("item1") + "");
			} catch (Exception e) {
				e.printStackTrace();
				return 0;
			}
		return rows;
	}

	*//**
	 * oracle 分页
	 * 从数据库中查询所有记录，然后通过游标来获取所需maxCount条记录
	 * @param sql 传入的sql语句
	 * @param list 参数
	 * @param startIndex 从哪一条记录开始
	 * @param maxCount 总共取多少条记录
	 * 
	 *//*

	public List getList(String sql, List list, int startIndex, int maxCount) {
		Connection connection = null;
		PreparedStatement ps = null;
		ResultSet rsSet = null;
		List listRS = null;

		try {
			logger.info(sql);
			connection = getConnection();
			*//**connection.prepareStatement(sql,游标类型,能否更新记录);
			 游标类型：
			 ResultSet.TYPE_FORWORD_ONLY:只进游标
			 ResultSet.TYPE_SCROLL_INSENSITIVE:可滚动。但是不受其他用户对数据库更改的影响。
			 ResultSet.TYPE_SCROLL_SENSITIVE:可滚动。当其他用户更改数据库时这个记录也会改变。
			 能否更新记录：
			 ResultSet.CONCUR_READ_ONLY,只读
			 ResultSet.CONCUR_UPDATABLE,可更新*//*

			String excuteSQL = "select * from ( select row_.*, rownum rownum_ from ( "
					+ sql + " )row_ where rownum <= ? ) where rownum_ > ? ";
			ps = connection.prepareStatement(excuteSQL,
					ResultSet.TYPE_SCROLL_INSENSITIVE,
					ResultSet.CONCUR_READ_ONLY);

			//设置参数
			int i = 0;
			for (; i < list.size(); i++) {
				ps.setObject(i + 1, list.get(i));
			}
			ps.setInt(++i, startIndex + maxCount);
			ps.setObject(++i, startIndex);
			
			 * 通用分页
			 
			// 通用分页1 ps.setMaxRows(startIndex+maxCount-1);
			ps.executeQuery();
			rsSet = ps.getResultSet();
			 通用分页 
			 *   //将游标移动到第一条记录  
			 通用分页2 
			 rsSet.first();
			 //	    游标移动到要输出的第一条记录
			 通用分页3 rsSet.relative(startIndex-2);

			createQuery(rsSet);
			connection.commit();

			listRS = query.list();

		} catch (SQLException e) {
			e.printStackTrace();
			return new ArrayList();
		} finally {
			releaseConnection(connection);
			try {
				if (null != ps)
					ps.clearParameters();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			ColseResultSet(rsSet);
			ColseStatement(ps);
		}
		return listRS;
	}

	*//**
	 * 通用分页:可以用于不同数据库 
	 * 从数据库中查询所有记录，然后通过游标来获取所需maxCount条记录
	 * @param sql 传入的sql语句
	 * @param list 参数
	 * @param startIndex 从哪一条记录开始
	 * @param maxCount 总共取多少条记录
	 * 
	 *//*

	public List getList2(String sql, List list, int startIndex, int maxCount) {
		Connection connection = null;
		PreparedStatement ps = null;
		ResultSet rsSet = null;
		List listRS = null;

		try {
			logger.info(sql);
			connection = getConnection();
			*//**connection.prepareStatement(sql,游标类型,能否更新记录);
			 游标类型：
			 ResultSet.TYPE_FORWORD_ONLY:只进游标
			 ResultSet.TYPE_SCROLL_INSENSITIVE:可滚动。但是不受其他用户对数据库更改的影响。
			 ResultSet.TYPE_SCROLL_SENSITIVE:可滚动。当其他用户更改数据库时这个记录也会改变。
			 能否更新记录：
			 ResultSet.CONCUR_READ_ONLY,只读
			 ResultSet.CONCUR_UPDATABLE,可更新*//*

			String excuteSQL = "select * from ( select row_.*, rownum rownum_ from ( "
					+ sql + " )row_ where rownum <= ? ) where rownum_ > ? ";

			ps = connection.prepareStatement(sql,
					ResultSet.TYPE_SCROLL_INSENSITIVE,
					ResultSet.CONCUR_READ_ONLY);

			//设置参数
			int i = 0;
			for (; i < list.size(); i++) {
				ps.setObject(i + 1, list.get(i));
			}
			// ps.setInt( ++i,startIndex+maxCount);
			//ps.setObject(++i,startIndex);
			
			 * 通用分页
			 
			// 通用分页1 
			ps.setMaxRows(startIndex + maxCount - 1);

			ps.executeQuery();
			rsSet = ps.getResultSet();
			 通用分页 
			 *   //将游标移动到第一条记录  
			 通用分页2 
			 rsSet.first();
			 //	    游标移动到要输出的第一条记录
			 通用分页3 rsSet.relative(startIndex-2);
			rsSet.first();
			rsSet.relative(startIndex - 2);
			createQuery(rsSet);
			connection.commit();

			listRS = query.list();

		} catch (SQLException e) {
			e.printStackTrace();
			return new ArrayList();
		} finally {
			releaseConnection(connection);
			try {
				if (null != ps)
					ps.clearParameters();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			ColseResultSet(rsSet);
			ColseStatement(ps);
		}
		return listRS;
	}

	public Connection saveOrUpdateSQL(String sql, List list) {
		return saveOrUpdateSQL(sql, list, true);
	}

	int batchCNT = 0;

	public int excuteBathe(String sql, List list) {

		Connection con = getConnection();
		PreparedStatement ps = null;
		try {
			ps = con.prepareStatement(sql);
			int i = 1;
			for (; i <= list.size(); i++) {
				System.out.println(i);
			
				List temp = (List) list.get(i - 1);
				for (int k = 0; k < temp.size(); k++) {
					ps.setObject(k + 1, temp.get(k));
//					if(i>33)  
						System.out.println("k="+k+"  "+temp.get(k));
				}
			
				ps.addBatch();
				if (0 == i % 10000) {
					logger.info("==>>i:" + i);
					System.out.println("i%10000==>>i:" + i);
					int cnt[] = ps.executeBatch();
					//System.out.println("--------------------------------------------");
					// for(int j=0;j<cnt.length;j++){
					// System.out.println(cnt[j]);
					//} // System.out.println("--------------------------------------------");
				}
			}
			if (0 != i % 10000) {
				logger.info("==>>i:" + i);
				System.out.println("last==>>i:" + i);
				int cnt[] = ps.executeBatch();
			}
			con.commit();
			System.out.println("list.size==>>i:" + list.size());

		} catch (SQLException e) {
			e.printStackTrace();
			try {
				con.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
		} finally {
			releaseConnection(con);
			try {
				ps.clearBatch();
				ps.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return 0;
	}

	public int excute(String sql, List list) {
		Connection connection = null;
		PreparedStatement ps = null;
		ResultSet rsSet = null;

		try {
			logger.info(sql);
			//System.out.println(sql);
			connection = getConnection();

			ps = connection.prepareStatement(sql);

			//设置参数
			for (int i = 0; i < list.size(); i++) {
				ps.setObject(i + 1, list.get(i));
			}
			ps.execute();
			connection.commit();

		} catch (Exception e) {
			try {
				connection.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
			e.printStackTrace();
			return -1;
		} finally {
			releaseConnection(connection);
			try {
				ps.clearParameters();
			} catch (SQLException e) {
				e.printStackTrace();
				return -1;
			}
			ColseResultSet(rsSet);
			ColseStatement(ps);
		}
		return 0;
	}

	public Connection excute(String sql, List list, boolean iscommit) {
		Connection connection = null;
		PreparedStatement ps = null;
		ResultSet rsSet = null;

		try {
			logger.info(sql);
			connection = getConnection();

			ps = connection.prepareStatement(sql);

			//设置参数
			for (int i = 0; i < list.size(); i++) {
				ps.setObject(i + 1, list.get(i));
			}
			ps.execute();
			if (iscommit)
				connection.commit();

		} catch (Exception e) {
			try {
				if (iscommit)
					connection.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
			e.printStackTrace();
			return null;
		} finally {
			if (iscommit)
				releaseConnection(connection);
			try {
				ps.clearParameters();
			} catch (SQLException e) {
				e.printStackTrace();
				return null;
			}
			ColseResultSet(rsSet);
			ColseStatement(ps);
		}
		return connection;
	}

	public int excute(String sql, List list, Connection con) {
		Connection connection = con;
		PreparedStatement ps = null;
		ResultSet rsSet = null;

		try {
			logger.info(sql);

			ps = connection.prepareStatement(sql);

			//设置参数
			for (int i = 0; i < list.size(); i++) {
				ps.setObject(i + 1, list.get(i));
			}
			ps.execute();
			connection.commit();

		} catch (Exception e) {
			try {
				connection.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
			e.printStackTrace();
			return -1;
		} finally {
			releaseConnection(connection);
			try {
				ps.clearParameters();
			} catch (SQLException e) {
				e.printStackTrace();
				return -1;
			}
			ColseResultSet(rsSet);
			ColseStatement(ps);
		}
		return 0;
	}

	*//**
	 *  commit connection in this method
	 *//*
	public Connection saveOrUpdateSQL(String sql, List list, Connection conn) {
		Connection connection = conn;
		PreparedStatement ps = null;
		ResultSet rsSet = null;

		try {
			logger.info(sql);

			ps = connection.prepareStatement(sql);

			//设置参数
			for (int i = 0; i < list.size(); i++) {
				ps.setObject(i + 1, list.get(i));
			}
			ps.execute();
			connection.commit();

		} catch (Exception e) {
			try {
				if (null != connection)
					connection.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
			e.printStackTrace();
			return null;
		} finally {
			releaseConnection(connection);
			try {
				if (null != ps)
					ps.clearParameters();
			} catch (SQLException e) {
				e.printStackTrace();
				return null;
			}
			ColseResultSet(rsSet);
			ColseStatement(ps);
		}
		return connection;
	}

	public Connection saveOrUpdateSQL(String sql, List list, boolean iscommit) {
		Connection connection = null;
		PreparedStatement ps = null;
		ResultSet rsSet = null;

		try {
			logger.info(sql);
			connection = getConnection();

			ps = connection.prepareStatement(sql);

			//设置参数
			for (int i = 0; i < list.size(); i++) {
				ps.setObject(i + 1, list.get(i));
			}
			ps.execute();
			if (iscommit)
				connection.commit();

		} catch (Exception e) {
			try {
				connection.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
			e.printStackTrace();
			return null;
		} finally {
			if (iscommit)
				releaseConnection(connection);
			try {
				if (iscommit)
					ps.clearParameters();
			} catch (SQLException e) {
				e.printStackTrace();
				return null;
			}
			ColseResultSet(rsSet);
			ColseStatement(ps);
		}
		return connection;
	}

	public ResultSet getResultSet(String sql, List list) {
		Connection connection = null;
		PreparedStatement ps = null;
		ResultSet rsSet = null;

		try {
			logger.info(sql);
			connection = getConnection();
			ps = connection.prepareStatement(sql);

			//设置参数
			for (int i = 0; i < list.size(); i++) {
				ps.setObject(i + 1, list.get(i));
			}
			ps.execute();
			rsSet = ps.getResultSet();
			// createQuery( rsSet );
			connection.commit();
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		} finally {
			releaseConnection(connection);
			try {
				ps.clearParameters();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			ColseResultSet(rsSet);
			ColseStatement(ps);
		}
		return rsSet;
	}

	public List getList(String sql, List list) {
		Connection connection = null;
		PreparedStatement ps = null;
		ResultSet rsSet = null;
		List listRS = null;

		try {
		    logger.info(sql);
		    connection = getConnection();

		    ps = connection.prepareStatement(sql);

		    //设置参数
		    for (int i = 0; i < list.size(); i++) {
			ps.setObject(i + 1, list.get(i));
		    }
		    
		    rsSet =ps.executeQuery();
		    createQuery(rsSet);
		    connection.commit();

		    listRS = query.list();

		} catch (SQLException e) {
		    e.printStackTrace();
		    return new ArrayList();
		}catch (Exception e) {
		    e.printStackTrace();
		    return new ArrayList();
		}
		finally {
		    releaseConnection(connection);
		    try {
			if (null != ps)
			    ps.clearParameters();
		    } catch (SQLException e) {
			e.printStackTrace();
		    }
		    ColseResultSet(rsSet);
		    ColseStatement(ps);
		}
		//logger.info("RS:="+listRS.size());
		return listRS;
	    }

	public static void main(String[] args) {
		String str="一、公司简介：<?xml:namespace prefix = o ns = \"urn:schemas-microsoft-com:office:office\" />中国人民人寿保险股份有限公司（简称“中国人保寿险”）是经国务院同意，中国保险监督管理委员会批准，由中国人民保险集团公司为主发起设立的全国性寿险公司。公司总部设在北京，注册资本人民币27亿元。作为中国人民保险集团公司旗下的子公司，中国人保寿险与“人民保险”一脉相承，中国人保五十八载的悠长历史、深厚底蕴与品牌联想将在这里传承和延伸。“立足全国，放眼国际，着力建设成为法人治理结构完善，业务高速有效发展，偿付能力充足，风险管控有力，综合竞争力强，有中国人保特色的现代化一流保险企业”是中国人保寿险的战略目标。以服务社会、服务大众为己任，承载“做大做强”保险业的厚望，中国人保寿险全面启动在全国范围的机构铺设。“天高任鸟飞，海阔凭鱼跃”，幸逢中国保险业改革发展的难得历史机遇，如果你胸怀振兴民族保险品牌的远大抱负，如果你志存实现个人价值的人生理想，如果你满怀创业拼搏的澎湃激情，请到中国人保寿险的广阔平台尽情展示。公司将为你搭建快捷的职业生涯发展通道和个人能力提升平台，用你我他的智慧和热情谱写中国人保寿险未来发展的华丽篇章。二、应聘须知：一、应聘人员基本条件。（一）认同公司企业文化。（二）政治素质较好，思想道德水平较高。（三）有良好的团队协作和创新意识，有较强的学习理解能力和沟通协调能力。（四）有良好的职业道德，无违纪受处分等不良记录。（五）应具有大学本科学历。（六）亲属回避。（七）身心健康。二、对符合条件的应聘人员，将及时通知本人参加应聘测试（笔试和面试）；未接通知请勿来访。三、应聘方式。请将个人简历投递至 hr07@picclife.cn。四、公司对应聘人员和资料保密，应聘者资料恕不退还。五、公司相关情况请查阅 www.picclife.cn。三、招聘岗位及需求：1、信息技术部－运行维护岗岗位介绍：业务系统的日常维护，问题查找，故障排除，数据维护等。岗位职责：问题处理：1、业务系统日常维护，接听热线电话，处理it_online邮箱的邮件。2、业务系统问题诊断，对bug进行跟踪处理。3、根据系统运维情况，及时反馈改进修正建议给开发处。数据维护：1、进行生产环境的各种数据维护操作。2、根据数据维护情况，在数据维护平台上增加相应功能，或及时反馈改进修正建议给开发处。其他：1、起草处室相关文件。2、完成领导交办的其他工作。应聘条件：学历要求：本科。计算机要求：熟练操作办公软件。专业要求：计算机相关专业。能力态度要求：具有良好的规划能力、分析能力、文字表达能力、沟通协调能力。2、信息技术部――软件开发岗岗位介绍：在上级的领导下，与相关需求分析人员一起，对提交的《需求规格说明书》进行开发前规范、细化，形成《系统设计说明书》，进行编码，并对其所处状态进行不断跟踪、及时向需求分析人员反馈。为了公司业务运营、发展、创新提供系统支持，提升公司信息应用系统的运作效率，根据信息应用系统的整合、数据规范标准的建设和开发管理规范，进行外包软件项目的软件开发管理、技术转移和二次开发，以及系统维护的技术支持工作。岗位职责：应用信息系统开发方案设计：1、规划核心系统二次开发整体实施方案。2、制定核心系统的详细整体系统开发设计方案。3、为公司业务发展和创新提供系统支持。系统设计：1、制定系统各项任务二次开发系统设计的计划，执行系统设计实施工作。2、与需求分析人员沟通协调，根据《需求规格说明书》形成《系统设计说明书》。3、研究系统的数据模型、系统架构，提出系统改造建议。系统开发：1、根据《系统设计说明书》，搭建相应开发环境，进行系统编码。2、对系统编码进行复审，根据需要优化程序代码。开发反馈：1、与需求分析人员进行沟通，解决开发中待确定的问题。2、及时向需求分析人员进行反馈开发进度.3、处理开发变更事项。其他：1、起草处室相关文件。2、完成领导交办的其他工作。应聘条件：学历要求：大学本科学历。专业要求：计算机科学、软件开发等相关专业。知识要求：1、熟悉保险业务知识和公司业务流程。2、熟练掌握计算机软件主流开发技能。3、熟练掌握数据库知识和开发设计。4、对计算机系统、网络和安全、应用系统架构等有全面的认识，熟悉项目管理理论，并有实践基础。5、熟悉对相关的技术标准有深刻的认识，对软件工程标准规范有良好的把握。能力态度要求：具备良好的沟通能力与责任心，有良好的团队协作能力。3、信息技术部－软件测试岗岗位介绍：在上级的领导下，与相关业务部门一起，设计信息系统的测试方案并具体组织测试，对测试结果进行反馈，最终使信息系统达到可以上线的程度。岗位职责：测试方案设计：1、以需求分析文档为依据，分析所有的测试功能点。2、为每个测试功能点设计相应的测试用例。3、撰写《测试方案说明书》测试执行：1、根据测试方案，执行测试用例。2、将测试结果反馈给开发队伍。3、对修改后的程序重新测试，直至全部通过。协调验收测试：1、与业务部门协调，协助其进行验收测试。2、负责处理验收测试过程中出现的问题，必要时向开发队伍反馈。3、协助业务部门完成验收测试报告。其他：1、起草处室相关文件。2、完成领导交办的其他工作。应聘条件：学历要求：大学本科学历。专业要求：计算机科学、软件开发等相关专业。能力态度要求：具有良好的规划能力、分析能力、文字表达能力、沟通协调能力。4、精算部－准备金评估岗岗位介绍：在上级的领导下，从事负债评估、财务分析与管理和产品定价复核等方面的工作；依照监管要求，完成各类与精算相关的报表和报告。发挥精算作用，参与策略制定、产品开发、财务测算、系统开发、业务发展等方面的工作。岗位职责：财务分析和管理：1、按月提取各类准备金，并配合计划财务部完成财务报表和信息统计报送。2、为确保准备金计提准确性，定期对准备金进行检测。3、对公司经营进行精算方面的财务分析，并向管理层提交分析报告，为公司管理决策提供参考。4、向管理层提供保单分红建议，并进行系统信息准备，并配合有关部门，将红利派发至保单持有人。5、根据万能保险账户财务状况，提供万能保险结算利率建议，并配合其他部门，确定结算利率，并在系统中实现。6、测算公司内含价值，供管理层决策参考，按照监管要求，提交内含价值报告。偿付能力：1、测算公司偿付能力，防范偿付能力风险，并提出偿付能力建议。2、按照监管要求，提交偿付能力报告，包括季度报告、年度报告。各类报表和报告：按照监管要求，提交各类监管报告和报表，包括：年度精算报告（包括准备金充足性测试报告、内含价值报告）;、分红业务年度报告、分红保险专题财务报告、统计信息报表、内控评估报告（精算部分）、风险评估报告（精算部分）。精算支持：1、参与公司预算、未来财务测算和审计工作。（精算部分）。2、参与产品开发、共同制定定价假设、审核产品定价。3、参与系统开发。4、参与基本法制定。5、参与业务模型制定。6、参与双核规则制定参与客服规则制定。应聘条件：学历要求：大学本科学历。专业要求：精算、金融、数学专业。外语要求：熟练阅读英文资料。计算机要求：熟练使用Excel等办公软件。资格要求：参加精算考试。能力态度要求：具有良好的分析能力、文字表达能力、沟通协调能力。";
		System.out.println(str.length());
		String str2=str.substring(0,3000);
		System.out.println(str2.length());
		// test SessionUtil功能：
		List list2 = new ArrayList();
		//list2.add(100014);
		//String sql = " select * from TBL_RECRUIT where isdel = '0' and  ROWNUM  <10    ";
		List list=new ArrayList();
		list.add("");
		list.add("");
		list.add("");
		list.add("");
		list.add("");
		list.add("");
		list.add("2009-01-16截止时间：");
		list.add("");
	//	list.add("一、公司简介：<?xml:namespace prefix = o ns = \"urn:schemas-microsoft-com:office:office\" />中国人民人寿保险股份有限公司（简称“中国人保寿险”）是经国务院同意，中国保险监督管理委员会批准，由中国人民保险集团公司为主发起设立的全国性寿险公司。公司总部设在北京，注册资本人民币27亿元。作为中国人民保险集团公司旗下的子公司，中国人保寿险与“人民保险”一脉相承，中国人保五十八载的悠长历史、深厚底蕴与品牌联想将在这里传承和延伸。“立足全国，放眼国际，着力建设成为法人治理结构完善，业务高速有效发展，偿付能力充足，风险管控有力，综合竞争力强，有中国人保特色的现代化一流保险企业”是中国人保寿险的战略目标。以服务社会、服务大众为己任，承载“做大做强”保险业的厚望，中国人保寿险全面启动在全国范围的机构铺设。“天高任鸟飞，海阔凭鱼跃”，幸逢中国保险业改革发展的难得历史机遇，如果你胸怀振兴民族保险品牌的远大抱负，如果你志存实现个人价值的人生理想，如果你满怀创业拼搏的澎湃激情，请到中国人保寿险的广阔平台尽情展示。公司将为你搭建快捷的职业生涯发展通道和个人能力提升平台，用你我他的智慧和热情谱写中国人保寿险未来发展的华丽篇章。二、应聘须知：一、应聘人员基本条件。（一）认同公司企业文化。（二）政治素质较好，思想道德水平较高。（三）有良好的团队协作和创新意识，有较强的学习理解能力和沟通协调能力。（四）有良好的职业道德，无违纪受处分等不良记录。（五）应具有大学本科学历。（六）亲属回避。（七）身心健康。二、对符合条件的应聘人员，将及时通知本人参加应聘测试（笔试和面试）；未接通知请勿来访。三、应聘方式。请将个人简历投递至 hr07@picclife.cn。四、公司对应聘人员和资料保密，应聘者资料恕不退还。五、公司相关情况请查阅 www.picclife.cn。三、招聘岗位及需求：1、信息技术部－运行维护岗岗位介绍：业务系统的日常维护，问题查找，故障排除，数据维护等。岗位职责：问题处理：1、业务系统日常维护，接听热线电话，处理it_online邮箱的邮件。2、业务系统问题诊断，对bug进行跟踪处理。3、根据系统运维情况，及时反馈改进修正建议给开发处。数据维护：1、进行生产环境的各种数据维护操作。2、根据数据维护情况，在数据维护平台上增加相应功能，或及时反馈改进修正建议给开发处。其他：1、起草处室相关文件。2、完成领导交办的其他工作。应聘条件：学历要求：本科。计算机要求：熟练操作办公软件。专业要求：计算机相关专业。能力态度要求：具有良好的规划能力、分析能力、文字表达能力、沟通协调能力。2、信息技术部――软件开发岗岗位介绍：在上级的领导下，与相关需求分析人员一起，对提交的《需求规格说明书》进行开发前规范、细化，形成《系统设计说明书》，进行编码，并对其所处状态进行不断跟踪、及时向需求分析人员反馈。为了公司业务运营、发展、创新提供系统支持，提升公司信息应用系统的运作效率，根据信息应用系统的整合、数据规范标准的建设和开发管理规范，进行外包软件项目的软件开发管理、技术转移和二次开发，以及系统维护的技术支持工作。岗位职责：应用信息系统开发方案设计：1、规划核心系统二次开发整体实施方案。2、制定核心系统的详细整体系统开发设计方案。3、为公司业务发展和创新提供系统支持。系统设计：1、制定系统各项任务二次开发系统设计的计划，执行系统设计实施工作。2、与需求分析人员沟通协调，根据《需求规格说明书》形成《系统设计说明书》。3、研究系统的数据模型、系统架构，提出系统改造建议。系统开发：1、根据《系统设计说明书》，搭建相应开发环境，进行系统编码。2、对系统编码进行复审，根据需要优化程序代码。开发反馈：1、与需求分析人员进行沟通，解决开发中待确定的问题。2、及时向需求分析人员进行反馈开发进度.3、处理开发变更事项。其他：1、起草处室相关文件。2、完成领导交办的其他工作。应聘条件：学历要求：大学本科学历。专业要求：计算机科学、软件开发等相关专业。知识要求：1、熟悉保险业务知识和公司业务流程。2、熟练掌握计算机软件主流开发技能。3、熟练掌握数据库知识和开发设计。4、对计算机系统、网络和安全、应用系统架构等有全面的认识，熟悉项目管理理论，并有实践基础。5、熟悉对相关的技术标准有深刻的认识，对软件工程标准规范有良好的把握。能力态度要求：具备良好的沟通能力与责任心，有良好的团队协作能力。3、信息技术部－软件测试岗岗位介绍：在上级的领导下，与相关业务部门一起，设计信息系统的测试方案并具体组织测试，对测试结果进行反馈，最终使信息系统达到可以上线的程度。岗位职责：测试方案设计：1、以需求分析文档为依据，分析所有的测试功能点。2、为每个测试功能点设计相应的测试用例。3、撰写《测试方案说明书》测试执行：1、根据测试方案，执行测试用例。2、将测试结果反馈给开发队伍。3、对修改后的程序重新测试，直至全部通过。协调验收测试：1、与业务部门协调，协助其进行验收测试。2、负责处理验收测试过程中出现的问题，必要时向开发队伍反馈。3、协助业务部门完成验收测试报告。其他：1、起草处室相关文件。2、完成领导交办的其他工作。应聘条件：学历要求：大学本科学历。专业要求：计算机科学、软件开发等相关专业。能力态度要求：具有良好的规划能力、分析能力、文字表达能力、沟通协调能力。4、精算部－准备金评估岗岗位介绍：在上级的领导下，从事负债评估、财务分析与管理和产品定价复核等方面的工作；依照监管要求，完成各类与精算相关的报表和报告。发挥精算作用，参与策略制定、产品开发、财务测算、系统开发、业务发展等方面的工作。岗位职责：财务分析和管理：1、按月提取各类准备金，并配合计划财务部完成财务报表和信息统计报送。2、为确保准备金计提准确性，定期对准备金进行检测。3、对公司经营进行精算方面的财务分析，并向管理层提交分析报告，为公司管理决策提供参考。4、向管理层提供保单分红建议，并进行系统信息准备，并配合有关部门，将红利派发至保单持有人。5、根据万能保险账户财务状况，提供万能保险结算利率建议，并配合其他部门，确定结算利率，并在系统中实现。6、测算公司内含价值，供管理层决策参考，按照监管要求，提交内含价值报告。偿付能力：1、测算公司偿付能力，防范偿付能力风险，并提出偿付能力建议。2、按照监管要求，提交偿付能力报告，包括季度报告、年度报告。各类报表和报告：按照监管要求，提交各类监管报告和报表，包括：年度精算报告（包括准备金充足性测试报告、内含价值报告）;、分红业务年度报告、分红保险专题财务报告、统计信息报表、内控评估报告（精算部分）、风险评估报告（精算部分）。精算支持：1、参与公司预算、未来财务测算和审计工作。（精算部分）。2、参与产品开发、共同制定定价假设、审核产品定价。3、参与系统开发。4、参与基本法制定。5、参与业务模型制定。6、参与双核规则制定参与客服规则制定。应聘条件：学历要求：大学本科学历。专业要求：精算、金融、数学专业。外语要求：熟练阅读英文资料。计算机要求：熟练使用Excel等办公软件。资格要求：参加精算考试。能力态度要求：具有良好的分析能力、文字表达能力、沟通协调能力。");
		list.add(str2);
		list.add("1075");
		list.add(null);
		list.add(null);
		list.add("");
		list.add("http%3A%2F%2Fcareer.tsinghua.edu.cn%2Fjyw%2Fdetail_zpxx.jsp%3Fzpnf%3D2009%26dwdm%3D2006000304");
		list2.add(list);
		String sql = " insert into t_crawler_content_tmp" + "( caseid,"
		+ " job_position," + " job_email," + " job_org," + " job_type,"
		+ " job_people_number," + " job_dept," + " job_issue_time,"
		+ " job_address," + " job_details," + " companyid,"
		+ " job_from," + " job_hr,job_language,job_from_url)" + " values"
		+ "(SEQ_CRAWLER.NEXTVAL," + " ?," + " ?," + " ?," + " ?,"+ " ?,"
		+ " ?," + " ?," + " ?," + " ?," + " ?," + " ?," + " ?,"+ " ?,"
		+ " ? )";
		int x=SessionUtils.getSession().excuteBathe(sql, list2);
//		for (int i = 0; i < list2.size(); i++) {
//
//			Map map = (Map) list2.get(i);
//			System.out.print(map.get("item1"));
//			System.out.print(map.get("item2"));
//			System.out.print(map.get("item3"));
//			System.out.println(map.get("item4"));
//			System.out.println("----------------------------------");
//		}

		//test 数据库连接
			try {
		 Connection cn = new SessionImpls().getConnection();
		 //System.out.println(cn);
		 Statement st=cn.createStatement();
		 int maxFieldSize=st.getMaxFieldSize();
		 //st.getGeneratedKeys();
		 System.out.println(st.getFetchSize());
		 System.out.println( maxFieldSize );
		 List<Object> list=new ArrayList<Object>();
		 ResultSet rs = st.executeQuery(sql);
		 
		 // ResultSet rs=ps.getResultSet();
		 System.out.println(" 列数 : "+rs.getMetaData().getColumnCount());
		 int ColumnCount=rs.getMetaData().getColumnCount();
		 while (rs.next()) {
		 for(int i=1; i<(ColumnCount+1);i++){
		 boolean add = list.add( rs.getObject(i));
		 
		 }
		 System.out.println(rs.getObject(1));
		 }

		 } catch (SQLException e) {
		 e.printStackTrace();
		 }

	}

}
*/